package com.iwdnb.gkgz.application.service;

import java.util.List;

import com.iwdnb.gkgz.application.model.request.AddStrategyTradeStockDataRequest;
import com.iwdnb.gkgz.common.model.dto.StockDayData;
import com.iwdnb.gkgz.common.model.dto.StockRangeDTO;

/**
 * 波段服务
 */
public interface StockRangeService {

    List<StockRangeDTO> queryStockRangeList(String code);

    List<StockRangeDTO> queryStockRangeList(String code, boolean useCache);


    List<StockRangeDTO> queryStockRangeList(String code,List<StockDayData> stockDayDataList);

    /**
     * 是否是底部价格
     *
     * @param code
     * @param date
     * @return
     */
    boolean isLowPrice(String code, String date);

    List<String> queryLowPriceDateList(String code);

    List<String> queryLowPriceDateList(String code, List<StockDayData> stockDayDataList,String matchDate);

    List<String> queryBollingLowPriceDateList(String code);

    List<String> queryBollingLowPriceDateList(String code, List<StockDayData> stockDayDataList,String matchDate);

    List<String> queryBollingAndLowPriceDateList(String code);

    List<String> queryBollingAndLowPriceDateList(String code, List<StockDayData> stockDayDataList,String matchDate);

    List<String> queryBollingAndLowPriceAndBiasDateList(String code);

    List<String> queryBollingAndLowPriceAndBiasDateList(String code,String matchDate, String beginDate, String endDate);

    List<String> queryHighPriceDateList(String code, List<StockDayData> stockDayDataList);

    List<String> queryBollingHighPriceDateList(String code, List<StockDayData> stockDayDataList);

    List<String> queryBollingAndHighPriceDateList(String code, List<StockDayData> stockDayDataList);

    List<String> queryBollingAndHighPriceAndBiasDateList(String code);

    List<String> queryTodayBuyStockList(String date);

    List<String> queryLowStockList(String date);

    String getTrend(String code, String date, int period);

    List<String> queryTrendTwentyBackDateList(String code);

    List<String> queryTrendTwentyBackDateList(String code,List<StockDayData> stockDayDataList);


    void doAllTrendTwentyBackTest(AddStrategyTradeStockDataRequest request);


    void doTrendTwentyBackTest(String code,String backFlag);
}
